home *** CD-ROM | disk | FTP | other *** search
- #
- # library.make
- #
-
- # Defaults for NeXT-specific Release Control options
- SRCROOT = .
- SYMROOT = .
- OBJROOT = .
-
- PRODUCT_ROOT = $(SYMROOT)
- LIB_NAME = lib$(NAME).a
-
- LIBRARY_DIR = .
-
- set_libdir = \
- if [ "$(PRODUCT_ROOT)" != "." ]; then \
- libdir="$(PRODUCT_ROOT)" ; \
- else \
- libdir="$(LIBRARY_DIR)" ; \
- fi
-
-
- APP_MAKEFILE_DIR = /NextDeveloper/Makefiles/app
- include $(APP_MAKEFILE_DIR)/common.make
- include $(APP_MAKEFILE_DIR)/specialrules.make
-
- all:: library
-
- bundle:: library # temporary hack until PB supports Libraries
-
- library::
- @($(process_target_archs)_obj ; \
- $(set_libdir) ; \
- $(set_language_cflags) ; \
- $(MAKE) project \
- "DSTROOT = $(DSTROOT)" \
- "INSTALLDIR = $(INSTALLDIR)" \
- "TOP_PRODUCT_ROOT = $(PRODUCT_ROOT)" \
- "LIBRARY_DIR = $$libdir" \
- "OFILE_DIR = $(OBJROOT)/$$obj_dir" \
- "SUBPROJ_OFILE_DIR = $(OBJROOT)/$$obj_dir" \
- "REL_OFILE_DIR = $$obj_dir" \
- "PROJ_CFLAGS = $(NORMAL_CFLAGS) $$language_cflags" \
- "MAKEFILEDIR = $(MAKEFILEDIR)" \
- "BUNDLE_EXTENSION = $$bundle_ext" \
- "DEVROOT = $(DEVROOT)" \
- "RC_CFLAGS = $$arch_cflags" \
- "RC_ARCHS = $$archs" \
- "LIB_NAME = $(LIB_NAME)" \
- "BUILD_TARGET = $@" \
- "SRCROOT = $(SRCROOT)" \
- "OBJROOT = $(OBJROOT)" \
- "SYMROOT = $(SYMROOT)/sym" \
- "SYM_DIR = $(SYMROOT)/sym" )
-
- debug::
- @($(process_target_archs)_debug_obj ; \
- $(set_bundle_ext) ; \
- $(set_libdir) ; \
- $(set_language_cflags) ; \
- $(MAKE) project \
- "DSTROOT = $(DSTROOT)" \
- "INSTALLDIR = $(INSTALLDIR)" \
- "TOP_PRODUCT_ROOT = $(PRODUCT_ROOT)" \
- "LIBRARY_DIR = $$libdir" \
- "OFILE_DIR = $(OBJROOT)/$$obj_dir" \
- "SUBPROJ_OFILE_DIR = $(OBJROOT)/$$obj_dir" \
- "REL_OFILE_DIR = $$obj_dir" \
- "PROJ_CFLAGS = $(DEBUG_CFLAGS) $$language_cflags" \
- "MAKEFILEDIR = $(MAKEFILEDIR)" \
- "BUNDLE_EXTENSION = $$bundle_ext" \
- "DEVROOT = $(DEVROOT)" \
- "RC_CFLAGS = $$arch_cflags" \
- "RC_ARCHS = $$archs" \
- "LIB_NAME = $(LIB_NAME)" \
- "BUILD_TARGET = $@" \
- "SRCROOT = $(SRCROOT)" \
- "OBJROOT = $(OBJROOT)" \
- "SYMROOT = $(SYMROOT)/sym" \
- "SYM_DIR = $(SYMROOT)/sym" )
-
- profile::
- @($(process_target_archs)_profile_obj ; \
- $(set_bundle_ext) ; \
- $(set_libdir) ; \
- $(set_language_cflags) ; \
- $(MAKE) project \
- "DSTROOT = $(DSTROOT)" \
- "INSTALLDIR = $(INSTALLDIR)" \
- "TOP_PRODUCT_ROOT = $(PRODUCT_ROOT)" \
- "LIBRARY_DIR = $$libdir" \
- "OFILE_DIR = $(OBJROOT)/$$obj_dir" \
- "SUBPROJ_OFILE_DIR = $(OBJROOT)/$$obj_dir" \
- "REL_OFILE_DIR = $$obj_dir" \
- "PROJ_CFLAGS = $(PROFILE_CFLAGS) $$language_cflags" \
- "MAKEFILEDIR = $(MAKEFILEDIR)" \
- "BUNDLE_EXTENSION = $$bundle_ext" \
- "DEVROOT = $(DEVROOT)" \
- "RC_CFLAGS = $$arch_cflags" \
- "RC_ARCHS = $$archs" \
- "LIB_NAME = $(LIB_NAME)" \
- "BUILD_TARGET = $@" \
- "SRCROOT = $(SRCROOT)" \
- "OBJROOT = $(OBJROOT)" \
- "SYMROOT = $(SYMROOT)/sym" \
- "SYM_DIR = $(SYMROOT)/sym" )
-
- # 'project' in library.make builds tools last, so that they can depend on
- # the library being built
- project:: $(INITIAL_TARGETS) toplevel_subcomponents resources $(LIBRARY_DIR)/$(LIB_NAME) tools
- -@($(RM) -f $(TOP_PRODUCT_ROOT)/$(CHANGES_FILE) ; \
- $(ECHO) "$(OFILE_DIR)" > $(TOP_PRODUCT_ROOT)/$(CHANGES_FILE))
-
- toplevel_subcomponents:: subprojs
-
-
- $(LIBRARY_DIR)/$(LIB_NAME): $(LIBRARY_NAME) $(PRODUCT_DEPENDS) $(OTHER_PRODUCT_DEPENDS)
- libtool -o $@ $(OFILES) $(OTHER_OFILES)
-
- # Restriction: Libraries don't have sub-libraries
- depend:: Makefile.dependencies $(SUBPROJECTS:.subproj=.depend) $(BUNDLES:.bproj=.depend) $(TOOLS:.tproj=.depend)
-
- $(PRODUCT_ROOT) \
- $(DSTROOT)$(INSTALLDIR) \
- $(LIBRARY_DIR):
- $(MKDIRS) $@
-
- THING_TO_STRIP = $(DSTROOT)$(INSTALLDIR)/$(LIB_NAME)
-
- strip_myself::
- @(if [ -f $(THING_TO_STRIP) ] ; then \
- cmd="$(STRIP) $(LIBRARY_STRIP_OPTS) $(THING_TO_STRIP)" ; \
- echo $$cmd ; $$cmd ; \
- else \
- echo Warning: Not able to strip $(THING_TO_STRIP) ; \
- fi)
-
- .bproj.strip .tproj.strip:
- @(cd $<; \
- $(MAKE_CMD) strip \
- "DSTROOT = $(DSTROOT)" \
- "INSTALLDIR = $(INSTALLDIR)" \
- "PARENT_DIR = $(PARENT_DIR)" \
- "NAME=$*")
-
- before_install:: $(DSTROOT)$(INSTALLDIR)
- $(RM) -f $(DSTROOT)$(INSTALLDIR)/$(LIB_NAME)
-
- after_install::
-
- # Note that the following will not correctly install a standalone
- # bundle under a Jasper build.
-
- install:: library before_install installhdrs $(OTHER_INSTALL_DEPENDS)
- @($(set_libdir) ; \
- lib_name="$(DSTROOT)$(INSTALLDIR)/$(LIB_NAME)" ; \
- $(MKDIRS) $(DSTROOT)$(INSTALLDIR) ; \
- cmd="$(CP) -p $$libdir/$(LIB_NAME) $$lib_name" ; \
- $(ECHO) $$cmd ; $$cmd || exit 1; \
- if [ "$(INSTALL_STRIP)" != "" ] ; then \
- $(MAKE) strip \
- "DSTROOT = $(DSTROOT)" \
- "INSTALLDIR = $(INSTALLDIR)" \
- "PARENT_DIR = $(INSTALLDIR)" ; \
- fi ; \
- cmd="$(CHOWN) -f $(INSTALL_AS_USER).$(INSTALL_AS_GROUP) $$lib_name" ; \
- $(ECHO) $$cmd ; \
- $$cmd || $(ECHO) Couldn\'t chown $$lib_name ; \
- cmd="$(CHMOD) -f go-w $$lib_name" ; \
- $(ECHO) $$cmd ; \
- $$cmd || $(ECHO) Couldn\'t chmod $$lib_name ; \
- if [ "$(INSTALL_PERMISSIONS)" != "" ] ; then \
- $(ECHO) $(CHMOD) -f $(INSTALL_PERMISSIONS) $$lib_name ; \
- $(CHMOD) -f $(INSTALL_PERMISSIONS) $$lib_name ; \
- fi ; \
- $(process_target_archs)_obj ; \
- $(set_bundle_ext) ; \
- $(MAKE) after_install \
- "DSTROOT=$(DSTROOT)" \
- "OBJROOT=$(OBJROOT)" \
- "DEVROOT = $(DEVROOT)" \
- "BUILD_TARGET = $@" \
- "SYMROOT=$(SYMROOT)" \
- "INSTALLDIR = $(INSTALLDIR)" \
- "PRODUCT_ROOT = $(PRODUCT_ROOT)" \
- "SYM_DIR = $(SYMROOT)/sym" \
- "OFILE_DIR = $(OBJROOT)/$$obj_dir" \
- "PROJ_CFLAGS = $(NORMAL_CFLAGS)" \
- "APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
- "RC_CFLAGS = $$arch_cflags" \
- "RC_ARCHS = $$archs" )
-
- #.DEFAULT
-
- help:
- @if (test "$<"); then \
- $(ECHO) 'ERROR: Unrecognized Makefile target "$<"'; \
- fi
- @$(ECHO) 'The following targets are available:'
- @$(ECHO)
- @$(ECHO) ' all Makes the library target (below). This is the default target.'
- @$(ECHO)
- @$(ECHO) ' library Compiles and links an optimized (and debuggable) version of the'
- @$(ECHO) ' library into $(NAME).a'
- @$(ECHO)
- @$(ECHO) ' depend Generates an optional Makefile.dependencies file for every level'
- @$(ECHO) ' of the library to reflect the complete dependency graph'
- @$(ECHO) ' (including headers).'
- @$(ECHO)
- @$(ECHO) ' install Builds (if needed) and copies <LibraryName>.a'
- @$(ECHO) ' into the installation directory, setting permissions'
- @$(ECHO) ' and owners as appropriate.'
- @$(ECHO)
- @$(ECHO) ' installsrc Installs the source files for the library into the directory'
- @$(ECHO) ' specified in the SRCROOT variable in a command-line argument.'
- @$(ECHO) ' Note: the target directory will be removed and recreated.'
- @$(ECHO)
- @$(ECHO) ' installhdrs Installs the header files for the library.'
- @$(ECHO)
- @$(ECHO) ' clean Removes all files in the library derived from previous builds.'
- @$(ECHO)
- @$(ECHO) ' help Lists these targets with their descriptions.'
- @$(ECHO)
- @$(ECHO) 'For more details, see the comments in /NextDeveloper/Makefiles/app/*.make.'
-
-